Check presence of fix for errata 835769 in Cortex-A53
authorJonathan Wright <[email protected]>
Wed, 28 Mar 2018 15:55:54 +0000 (16:55 +0100)
committerJonathan Wright <[email protected]>
Thu, 12 Apr 2018 11:12:56 +0000 (12:12 +0100)
A fix for errata 835769 may be available in revisions r0p2, r0p3 or r0p4
of the Cortex-A53 processor. The presence of the fix is determined by
checking bit 7 in the REVIDR register.

If the fix is present we report ERRATA_NOT_APPLIES which silences the
erroneous 'missing workaround' warning.

Change-Id: Ib75b008e755e9ac648554ca9398024fdbea4a91a
Signed-off-by: Jonathan Wright <[email protected]>
lib/cpus/aarch64/cortex_a53.S

index bec5b9e030be4d4ab3383ba41c188e81cd69f96a..3a23e025fac0f302acc25be8f9507d69a29681a3 100644 (file)
@@ -145,8 +145,23 @@ endfunc check_errata_855873
  * This workaround is statically enabled at build time.
  */
 func check_errata_835769
-       mov     x1, #0x04
-       b       cpu_rev_var_ls
+       cmp     x0, #0x04
+       b.hi    errata_not_applies
+       /*
+        * Fix potentially available for revisions r0p2, r0p3 and r0p4.
+        * If r0p2, r0p3 or r0p4; check for fix in REVIDR, else exit.
+        */
+       cmp     x0, #0x01
+       mov     x0, #ERRATA_APPLIES
+       b.ls    exit_check_errata_835769
+       /* Load REVIDR. */
+       mrs     x1, revidr_el1
+       /* If REVIDR[7] is set (fix exists) set ERRATA_NOT_APPLIES, else exit. */
+       tbz     x1, #7, exit_check_errata_835769
+errata_not_applies:
+       mov     x0, #ERRATA_NOT_APPLIES
+exit_check_errata_835769:
+       ret
 endfunc check_errata_835769
 
 /*